import java.util.LinkedList;
import java.util.Queue;

// 消息类
class Message {
	private String content;

	public Message(String content) {
		this.content = content;
	}

	public String getContent() {
		return content;
	}
}

// 消息队列类
class MessageQueue {
	private Queue<Message> queue = new LinkedList<>();

	// 发送消息
	public void send(Message message) {
		queue.add(message);
	}

	// 接收消息
	public Message receive() {
		return queue.poll();
	}
}

// 生产者类
class Producer {
	private MessageQueue messageQueue;

	public Producer(MessageQueue messageQueue) {
		this.messageQueue = messageQueue;
	}

	// 发送消息
	public void sendMessage(String content) {
		Message message = new Message(content);
		messageQueue.send(message);
	}
}

// 消费者类
class Consumer {
	private MessageQueue messageQueue;

	public Consumer(MessageQueue messageQueue) {
		this.messageQueue = messageQueue;
	}

	// 接收消息
	public void receiveMessage() {
		Message message = messageQueue.receive();
		if (message != null) {
			System.out.println("Received message: " + message.getContent());
		} else {
			System.out.println("No message available");
		}
	}
}

// 测试类
public class Main {
	public static void main(String[] args) {
		MessageQueue messageQueue = new MessageQueue();
		Producer producer = new Producer(messageQueue);
		Consumer consumer = new Consumer(messageQueue);

		producer.sendMessage("Hello, World!");
		consumer.receiveMessage();
	}
}
//要从零开始实现一个简单的消息中间件，你可以使用 Java 来实现一个基本的消息队列系统，下面是一个简单的实现示例：
//这个简单的消息队列系统包括了消息、消息队列、生产者和消费者，并且展示了如何发送和接收消息。这只是一个非常基础的示例，实际的消息中间件系统还需要处理并发、持久化、消息确认等更复杂的功能。
//在实际的生产环境中，你可能需要考虑使用多线程来处理并发请求，持久化消息以防止丢失，以及实现消息确认机制等。另外，你也可以考虑使用观察者/被观察者模式或发布/订阅模式来扩展这个基础示例，以实现更复杂的消息传递机制。